#include <stdio.h>
#include <malloc.h>
#include "sqqueue.h"

void InitQueue(SqQueue *&q)  //初始化顺序环形队列
{
    q=(SqQueue *)malloc (sizeof(SqQueue));
    q->front=q->rear=0;
}
void DestroyQueue(SqQueue *&q) //销毁顺序环形队列
{
    free(q);
}
bool QueueEmpty(SqQueue *q)  //判断顺序环形队列是否为空
{
    return(q->front == q->rear);

}


int QueueLength(SqQueue *q)   //返回队列中元素个数，也称队列长度
{
   return(q->rear - q->front);
}

bool enQueue(SqQueue *&q,ElemType e)   //进队
{
    if((q->rear+1)%MaxSize==q->front)
        return false;
    q->rear = (q->rear+1)%MaxSize;
    q->data[q->rear]=e;
    return true;
}
bool deQueue(SqQueue *&q,ElemType &e)  //出队
{
    if(q->front == q->rear)
        return false;
    q->front=(q->front+1)%MaxSize;
    e=q->data[q->front];
    return true;



}

void dispQueue(SqQueue *&q)
{
    int m ,n;
    m = q->front%MaxSize;
    n = q->rear%MaxSize;
   for(int i = m;i<n+1;i++){
       if(i==n){
           printf("%c",q->data[i+1]);
           break;
       }
       printf("%c ",q->data[i + 1]);
   }
   printf("\n");
}

void outQueue(SqQueue *&q) // 全部出队
{
    char e;

    while(deQueue(q, e)) {
        printf("%c ", e);
    }

    printf("\n出队完毕！\n");
}
